import { defineStore } from 'pinia'
import { ref } from 'vue'
import api from '@/api'
import { setToken, clearToken } from '@/utils'

// 创建用户相关小仓库
export const useUserStore = defineStore('user', () => {

  // 1. 定义管理用户数据的 state
  const token = ref('')

  // 2. 定义获取接口数据的 action 函数
  async function netLogin(params) {
    
    let res = await api.user.login(params)
    // 成功 200 --> token
    // 失败 201 --> 失败错误信息
    if (res.code === 200) {
      token.value = res.data.token
      // 本地存储持久化存储
      setToken(res.data.token)
      return res.code
    } else {
      return Promise.reject(new Error(res.message))
    }
  }
  
  // 清除数据
  function clear() {
    token.value = ''
    clearToken()
  }

  // 3. 以对象的格式把 state 和 action return
  return {
    token,
    netLogin,
    clear
  }
})
